MySQL GROUP BY 和 COUNT 多列
全部标签 我有以下结果集:request_id|p_id66|1066|1066|1066|2266|2276|2376|24我正在尝试选择排除具有特定组合值的记录的行:request_id|product_id66|1076|23所以输出结果集应该只包含这些记录:66|2266|2276|24我试过:select*from`table`whererequest_idNOTIN(66,76)ANDproduct_idNOTIN(10,22)但这给了我空的结果集。如何排除这两个值的组合? 最佳答案 你可以试试下面-DEMOselect*from
我正在尝试使用CakePHP按出生日期分组并根据结果进行计数。这是我的查询。$data=$this->User->find('all',array('fields'=>array("DATE_FORMAT(NOW(),'%Y')-DATE_FORMAT(User.dob,'%Y')-(DATE_FORMAT(NOW(),'00-%m-%d')'age'));到目前为止,还不错。User.dob字段是出生日期,它是一个DATETIME字段。事情是,它返回这样的东西:Array([0]=>Array([0]=>Array([age]=>9[COUNT(id)]=>1))[1]=>Array
SELECTstudent_id,section,count(*)astotalFROMraw_datarWHEREresponse=1GROUPBYstudent_id,section测试分为4个部分,每个部分都有不同数量的问题。我想知道,对于每个学生和每个部分,他们正确回答了多少个问题(response=1)。但是,对于此查询,如果学生在给定部分没有正确回答问题,则该行将完全从我的结果集中丢失。我怎样才能确保对于每个学生,总是返回4行,即使一行的“总计”为0?这是我的结果集:student_idsectiontotal1DAP--2931MEA--1621NNR--131-->mi
我仍在学习MySQL。我可能犯了一个非常基本的错误,我准备在这里接受惩罚......这个查询试图做的是根据他们发表的书评和食谱评论的数量从我们的网站中选择排名靠前的成员。我在SQL查询本身中计算总数。查询速度很慢(9秒),考虑到我们目前只有400名成员和几千条评论,而且增长速度非常快,因此肯定无法扩展。我假设它在此处进行全表扫描,并且计算正在减慢它的速度,但我不知道执行此操作的替代方法并且希望获得一些智慧。SQL语句如下:SELECTusers.*,COUNT(DISTINCTbookshelf.ID)AStitles,COUNT(DISTINCTbook_reviews.ID)asb
我不确定这是否是一个好问题。我有一个复杂的查询,其中有很多联合,可以在多个表中搜索某个关键字(用户输入)。搜索到的所有表都与表book相关。使用LIMIT对结果集进行分页,因此始终最多撤回10个结果。我想要结果集中的一个额外列,显示找到的结果总数。我不想使用单独的查询来执行此操作。是否可以向结果集中添加一个count()列来计算找到的每个结果?输出看起来像这样:IDTitleAuthorCount(...)1book_1auth_1232book_2auth_2234book_4auth_..23...谢谢! 最佳答案 这不会将计数
我有一个数据库id|parentid|name1|0|CatOne2|0|CatTwo3|0|CatThree4|1|SubCatOne5|1|SubCatOne26|3|SubCatThree如何选择这只猫OrderByid,parentid?也就是CatOne1--SubCatOne4--SubCatOne25CatTwo2CatThree3--SubCatThree6 最佳答案 假设你的表名为cats,试试这个:select*fromcatsorderbycasewhenparentid=0thenidelseparentid
有时候在持久化一个obj的时候,它的某个字段太大,无法放入db字段,导致数据截断异常。在下面的代码中,我trycatchDataException并简单地清空该字段,然后重新保存。但是,我在重新保存时遇到异常。为什么会出现批量更新异常,我该如何解决?publicstaticvoidsave(Objectobj)throwsException{try{beginTransaction();getSession().save(obj);commitTransaction();}catch(Exceptione){e.printStackTrace();rollbackTransaction
我有两个表,用户和部门。我想要一个表,其中有两列:第一列是部门名称,第二列是计数-有多少用户分配给了这个部门。我有这段代码:SELECTdepartment_nameas'deptName',COUNT(users.department_id)as'userCount'FROMdepartmentsLEFTOUTERJOINusersONdepartments.id=users.department_idGROUPBY'deptName'部门的表列是:integeridPKvarchar(20)department_name用户的表列是:integeridPKvarchar(20)na
这似乎是一个非常简单的查询,但不知何故我总是收到错误...基本上,我只是从一个用户那里得到了一堆信息,现在我要在一个查询中更新他们在users表中的记录:UPDATEusersSETtimezone='America/New_York',SETupdates='NO',SET已验证='YES'WHEREid='1'但是,运行之后,我得到以下错误:“您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,了解在‘SETupdates='NO',SETverified附近使用的正确语法>='YES'WHEREid='1''在第1行。非常感谢任何帮助。
我正在尝试左外连接2个表:TABLE1包含用户列表,TABLE2包含用户填写的表单列表。我想按用户显示在给定日期后创建的表单数,其中状态等于已完成。以下查询有效但未显示NULL值(我需要):selectTABLE1.USERNAME,count(TABLE2.FORMS)fromTABLE1leftouterjoinTABLE2on(TABLE2.USERID=TABLE1.USERID)andTABLE2.STATUS=COMPLETEDwhereTABLE2.DATE>20140801groupbyTABLE1.USERNAME;我需要做什么才能包含NULL计数的用户,即TABLE